home *** CD-ROM | disk | FTP | other *** search
/ Aminet 3 / Aminet 3 - July 1994.iso / Aminet / util / batch / ScriptTools.lha / ScriptTools / src / TackOn.mod < prev   
Encoding:
Text File  |  1994-01-20  |  1.7 KB  |  81 lines

  1. (*
  2. ** -------------------------------------------------------------------------
  3. ** Program:  TackOn
  4. ** Author:   Keith R. Burby
  5. ** Version:  0.1
  6. ** Date:     19.1.94
  7. ** Description:
  8. ** AmiaDOS 2.0/3.0 replacement for the ARP Shell's "TackOn" command.
  9. ** Appends a filename to the end of a path.
  10. ** -------------------------------------------------------------------------
  11. *)
  12.  
  13. (*
  14.   History
  15.  
  16.   v0.0 (24.12.93)
  17.   First Edition
  18.  
  19.   v0.1 (19.1.94)
  20.   Now uses Dos.AddPart() function.
  21. *)
  22.  
  23. MODULE TackOn;
  24.  
  25.   IMPORT
  26.     (* NoGuru, *)
  27.     d := Dos,
  28.     SYS := SYSTEM;
  29.  
  30.   CONST
  31.     ProgName = "TackOn\o"
  32.                "$VER: TackOn 0.1 (19.1.94) Keith R. Burby";
  33.     MinDosLib = 36;   (* Lowest version of dos.library this program can use *)
  34.     Template = "PATH/A,FILE/A";
  35.  
  36.   TYPE
  37.     LongString = ARRAY 512 OF CHAR;
  38.     ArgStruct = STRUCT (dummy: d.ArgsStruct)
  39.       Path, File: d.ArgString;
  40.     END;
  41.  
  42.   VAR
  43.     ErrVal: LONGINT;
  44.  
  45.  
  46.   PROCEDURE GetFullname(): LONGINT;
  47.  
  48.     VAR
  49.       LastChar: CHAR;
  50.       Fullname: LongString;
  51.       MyArgs: ArgStruct;
  52.       MyRDArgs: d.RDArgsPtr;
  53.  
  54.     BEGIN
  55.       MyRDArgs := d.ReadArgs(Template, MyArgs, NIL);
  56.       IF (MyRDArgs # NIL) THEN
  57.         COPY(MyArgs.Path^, Fullname);
  58.         IF d.AddPart(Fullname, MyArgs.File^, SIZE(Fullname)) THEN
  59.           d.PrintF("%s\n", SYS.ADR(Fullname));
  60.         END;
  61.         d.FreeArgs(MyRDArgs);
  62.       END;
  63.       RETURN(d.IoErr());
  64.     END GetFullname;
  65.  
  66.  
  67.   BEGIN
  68.     IF (d.dos.lib.version >= MinDosLib) THEN
  69.       ErrVal := GetFullname();
  70.       IF (ErrVal # 0) THEN
  71.         IF (d.PrintFault(ErrVal, ProgName)) THEN
  72.           HALT(10);
  73.         ELSE
  74.           HALT(20);
  75.         END;
  76.       END;
  77.     ELSE
  78.       HALT(MinDosLib);
  79.     END;
  80.   END TackOn.
  81.